package com.rabbiter.association.entity;

import lombok.Data;
import org.springframework.data.annotation.Id;
import org.springframework.data.elasticsearch.annotations.DateFormat;
import org.springframework.data.elasticsearch.annotations.Document;
import org.springframework.data.elasticsearch.annotations.Field;
import org.springframework.data.elasticsearch.annotations.FieldType;

import java.time.LocalDateTime;

@Data
@Document(indexName = "request-logs")
public class RequestLog {
    @Id
    private String id; // 日志记录的唯一标识符

    @Field(type = FieldType.Date, format = DateFormat.custom, pattern = "yyyy-MM-dd'T'HH:mm:ss.SSSZ")
    private LocalDateTime timestamp; // 日志记录的时间戳，表示事件发生的具体时间

    @Field(type = FieldType.Text)
    private String className; // 记录事件发生时所在的类名

    @Field(type = FieldType.Text)
    private String methodName; // 记录事件发生时调用的方法名

    @Field(type = FieldType.Text)
    private String args; // 方法调用时传递的参数，以字符串形式记录

    @Field(type = FieldType.Long)
    private long executionTime; // 方法执行的时间，单位为毫秒

    @Field(type = FieldType.Boolean)
    private boolean success; // 方法执行是否成功，成功为true，失败为false

    @Field(type = FieldType.Text)
    private String response; // 方法执行返回的响应结果，类型为Object，可根据需要存储复杂对象

    @Field(type = FieldType.Text)
    private String error; // 如果方法执行失败，记录错误信息或异常消息
}
